Name: phoenix
Owner: SDSLabs
Description: Redis based phantomjs queue
Created: 2015-03-17 17:08:10.0
Updated: 2017-11-25 10:03:39.0
Pushed: 2015-04-07 09:56:04.0
Homepage: https://blog.sdslabs.co/2015/04/announcing-phoenix/
Size: 15748
Language: JavaScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Redis based phantomjs queue
redis
(https://github.com/antirez/redis)$ npm install
)npm test
)By default it subscribes to a single channel specified in the config
Before you start using the application, assure that a redis server is running ($ redis-server
).
Phoenix will refuse to start if redis is down
$ node app.js
)This trigger the node application to spawn a new phantomjs
child process and opens the website.
You can see the config.sample.yml
for a sample configuration.
Note that some options are incompatible with each other, for eg
you can't send a request body in a GET request.
Do not edit default.yml unless you are working on phoenix itself.
By setting the js
key in config.yml you can run code on the loaded web page before the page is
loaded itself.
phoenix logs every phantomjs instance. For every instance that is created, a new temporary
directory is created in the logs directory. The config passed to phantomjs is stored in the config.json
file. The output from the phantomjs instance is stored in two files: browser.log
and page.log
.
browser.log
is the higher level log file, which records events and errors made by the browser instance.
Such as Injection events and final status of the page load.
page.log
holds the log from the page context. This includes any console.log statements made from the page
and any alert/confirm/prompt calls as well.
Instead of cloning and running the entire repo for each project, you can use the npm package
(called phantom-phoenix
), which has its own binary called phoenix
which you can run.
To run phoenix
in a directory, the following conditions must be true:
config.yml
file must exist in the directoryAfter that you can append messages to the list specified in the config, and phoenix will start runners for each of your requests once you publish the id
You can append two things to the list:
a=1&b=2
). This overrides and merges with existing query params in the configThis way, you can send an id=1
and phoenix will open the correct url.
Instead of just using a redis pubsub, we use a hybrid pubsub+list model as queue to store logs. Instead
of directly publishing the request to the channel, you push it to a list, and then publish the index
of the just pushed item on the list. The list is maintained at $channel:queue
, where $channel is the queue
name specified in the config.
For, eg if the channel name is the default (phoenix
), you do the following:
phoenix
redis-cli
H phoenix:queue "http://google.com"`
eger) 8
ISH phoenix 7
phoenix will pick this up and give something like following as output:
T: phoenix-11634lNeXLbHqhRM3
: phoenix-11634lNeXLbHqhRM3