Thanks. Sounds good. How about this to bake your noodle. Not to be a dead
horse.  But, looking here <http://dev.twitter.com/doc/post/statuses/update> it
appears as though the statuses/update does not have a rate limit, other than
the 1000 limit for the day that applies regardless which i have not hit.
 Figure it all seems confusing.  Still appears that I should not even have
an hourly limit with this api only the daily 1000.  I guess rules of thumb
although I would like to have not gotten rate limited until a higher number
than the ~150 because of to much at one time.  So the 150 is only for GET
not POST.  POST is what I do.  So it looks like the 1000 is what I do hit
and something that governs that limit seems to have a condition that states
that if there is a lot of statuses/update within a certain time period flag
the account with this rate limit for the next hour or so.

On Thu, Jul 29, 2010 at 4:59 PM, natefanaro <natefan...@gmail.com> wrote:

> From personal experience the limit is around 150 per hour. That number
> has been raised/lowered in the past and yes the error message is
> misleading. It is possible that the 150 per hour is just a hard limit
> and 1000 per day is a policy limit. Either way if you can technically
> post 150 an hour that's as many as you're going to be able to do.
> Unless you present a very very good case to Twitter I don't believe
> this limit can be raised.
>
> I know the link Matt gave has some solid numbers but I wouldn't expect
> any more detail than that. It's been mentioned in this group before
> that exact numbers can't be given about some limits. They can change
> at any time and spammers could use that info to fly under the spam
> team's radar.
>
> On Jul 29, 3:50 pm, Eric Mortensen <emort...@gmail.com> wrote:
> > Why not? If Twitter states I can send 150 an hour or 1000 a day I should
> be
> > able to.  Not my rules its twitters. So I guess it needs to be written
> > somewhere that 42 per hour is the limit.  I am just trying to understand
> why
> > it appears that I am hitting a limit when i am only doing what twitter
> > apparently allows.  The limit I see is possibly the number of messages
> sent
> > at one time and twitter can't handle it and throws the error I have been
> > receiving.  So if that exists than I understand.  I just need to know
> where
> > it is stated.  The error message appears to wrong as well since I can
> still
> > send tweets and it has been a couple hours later.  Then I can tell the
> > program manager that this is why we can't send this many messages because
> of
> > this limit.  Maybe what will help is a link stating that there are
> > protections that prevent a certain number of updates/tweets happening at
> > once.
> >
> > Thanks
> >
> > On Thu, Jul 29, 2010 at 3:22 PM, Matt Harris <thematthar...@twitter.com
> >wrote:
> >
> > > Why are you sending so many Tweets? It sounds like you are being
> restricted
> > > because you are sending too many per hour. The limit of updates per day
> > > exists but there are protections to prevent all those updates happening
> at
> > > once. I'm not familiar with the code that handles the measure windows
> or
> > > what the limits are but consider that 1000 tweets per day is approx 42
> per
> > > hour.
> >
> > > Matt
> >
> > > On Thu, Jul 29, 2010 at 8:59 AM, Eric Mortensen <emort...@gmail.com
> >wrote:
> >
> > >> For instance, set up the my database to create 200 tweets to post to a
> > >> account. It ran at 11:49 AM EST.  I noticed that 127 tweets were
> posted and
> > >> the remaining got kicked with the error response. Not sure if there is
> a
> > >> limit of 127 I thought it was 150 limit per hour.  This also does not
> hit
> > >> the 1000 daily limit since it was only 200 tweets.  I will try this
> again in
> > >> about 1 hour.  I should be able to start tweeting again.  Let me know
> what
> > >> you think?
> >
> > >> On Wed, Jul 28, 2010 at 12:19 PM, Eric Mortensen <emort...@gmail.com
> >wrote:
> >
> > >>> But, It appears did not hit a 1000 update limit since after an hour
> and
> > >>> can start updates again.  That why it appears to be an hourly limit.
>  Not to
> > >>> mention when this started I did not even have a 1000 tweets total on
> the
> > >>> account.  That is why it can't be the 1000 a day limit. There is
> should be
> > >>> another reason for this.
> >
> > >>> On Tue, Jul 27, 2010 at 6:56 PM, Matt Harris <
> thematthar...@twitter.com>wrote:
> >
> > >>>> Hey Eric,
> >
> > >>>> That error is the Twitter Limits kicking in saying there are too
> many
> > >>>> status updates being posted by the account. This isn't an API rate
> limit but
> > >>>> a natural limit which applies to all of Twitter. A user may not
> Twitter more
> > >>>> than 1000 updates a day (this includes retweets).
> >
> > >>>> More information on these limits are explained on the page I linked
> to
> > >>>> before:  http://support.twitter.com/forums/10711/entries/15364
> >
> > >>>> Hope that clarifies the what is happening.
> > >>>> Matt
> >
> > >>>> On Tue, Jul 27, 2010 at 12:27 PM, Eric Mortensen <
> emort...@gmail.com>wrote:
> >
> > >>>>> Here is a response:
> > >>>>> <?xml version="1.0" encoding="UTF-8"?>
> > >>>>> <hash>
> > >>>>>   <error>User is over daily status update limit.</error>
> > >>>>>   <request>/1/statuses/update.xml</request>
> > >>>>> </hash>
> >
> > >>>>> On Thu, Jul 15, 2010 at 5:41 PM, Matt Harris <
> > >>>>> thematthar...@twitter.com> wrote:
> >
> > >>>>>> Hey Eric,
> >
> > >>>>>> Sorry that help article didn't answer your question. Can you
> provide
> > >>>>>> the actual HTTP request being made and the HTTP response you get
> back? We're
> > >>>>>> interested in the response body content in particular.
> >
> > >>>>>> Also, remember we disable basic authentication on August 16th so
> you
> > >>>>>> want to switch to that method of authentication now.
> >
> > >>>>>> Matt
> >
> > >>>>>> On Thu, Jul 15, 2010 at 12:46 PM, Eric Mortensen <
> emort...@gmail.com>wrote:
> >
> > >>>>>>> Unfortunately not.  Do you have anything else that might explain
> it?
> >
> > >>>>>>> On Thu, Jul 15, 2010 at 1:48 PM, Matt Harris <
> > >>>>>>> thematthar...@twitter.com> wrote:
> >
> > >>>>>>>> Hi Eric,
> >
> > >>>>>>>> In addition to the API Rate Limits there are general usage
> limits
> > >>>>>>>> which apply to all of Twitter, including the website. These
> limits restrict
> > >>>>>>>> various actions including the number of updates that can be
> posted per day.
> >
> > >>>>>>>> You can read more about Twitter Limits on our help website:
> > >>>>>>>>http://support.twitter.com/forums/10711/entries/15364
> >
> > >>>>>>>> Hope that answers your question,
> > >>>>>>>> Matt
> >
> > >>>>>>>> On Thu, Jul 15, 2010 at 10:11 AM, Eric <emort...@gmail.com>
> wrote:
> >
> > >>>>>>>>> It appears that I am hitting a 150 post rate limit when I use
> the
> > >>>>>>>>> statuses/update.xml api to update a twitter account eventhough
> I
> > >>>>>>>>> should not have this limit doing only a post. Is there a reason
> > >>>>>>>>> why?
> > >>>>>>>>> Here is the code I am using from oracle to do this:
> >
> > >>>>>>>>> create or replace PACKAGE BODY tweet
> > >>>>>>>>> AS
> >
> > >>>>>>>>>  twit_host VARCHAR2(255) := 'api.twitter.com';
> > >>>>>>>>>  twit_protocol VARCHAR2(10) := 'http://';
> >
> > >>>>>>>>>  -- URL for status updates
> > >>>>>>>>>  tweet_url VARCHAR2(255) := '/1/statuses/update.xml';
> >
> > >>>>>>>>>  FUNCTION tweet
> > >>>>>>>>>    (
> > >>>>>>>>>      p_user IN VARCHAR2,
> > >>>>>>>>>      p_pwd IN VARCHAR2,
> > >>>>>>>>>      p_string IN VARCHAR2,
> > >>>>>>>>>      p_proxy_url IN VARCHAR2 DEFAULT NULL,
> > >>>>>>>>>      p_no_domains IN VARCHAR2 DEFAULT NULL )
> > >>>>>>>>>    RETURN BOOLEAN
> > >>>>>>>>>  AS
> > >>>>>>>>>    v_req   UTL_HTTP.REQ;  -- HTTP request ID
> > >>>>>>>>>    v_resp  UTL_HTTP.RESP;  -- HTTP response ID
> > >>>>>>>>>    v_value VARCHAR2(1024); -- HTTP response data
> > >>>>>>>>>    v_status VARCHAR2(160);   -- Status of the request
> > >>>>>>>>>    v_call VARCHAR2(2000);  -- The request URL
> > >>>>>>>>>    v_log_value varchar2(4000) := 'status';
> > >>>>>>>>>  BEGIN
> >
> > >>>>>>>>>    -- Twitter update url
> > >>>>>>>>>    v_call := twit_protocol ||
> > >>>>>>>>>              twit_host ||
> > >>>>>>>>>              tweet_url;
> >
> > >>>>>>>>>    -- encoded status string
> > >>>>>>>>>    v_status := utl_url.escape(
> > >>>>>>>>>      url => 'status=' || SUBSTR(
> short_url.encode_text(p_string) ,
> > >>>>>>>>> 1,140));
> >
> > >>>>>>>>>    -- Authenticate via proxy
> > >>>>>>>>>    -- Proxy string looks like '
> http://username:passw...@proxy.com'
> > >>>>>>>>>    -- p_no_domains is a list of domains not to use the proxy
> for
> > >>>>>>>>>    -- These settings override the defaults that are configured
> at
> > >>>>>>>>> the
> > >>>>>>>>> database level
> > >>>>>>>>>    IF p_proxy_url IS NOT NULL
> > >>>>>>>>>    THEN
> > >>>>>>>>>      Utl_Http.set_proxy (
> > >>>>>>>>>        proxy                 => p_proxy_url,
> > >>>>>>>>>        no_proxy_domains      => p_no_domains
> > >>>>>>>>>        );
> > >>>>>>>>>    END IF;
> >
> > >>>>>>>>>    -- Has to be a POST for status update
> > >>>>>>>>>    v_req := UTL_HTTP.BEGIN_REQUEST(
> > >>>>>>>>>          url => v_call,
> > >>>>>>>>>      method =>'POST');
> >
> > >>>>>>>>>    -- Pretend we're a moz browser
> > >>>>>>>>>    UTL_HTTP.SET_HEADER(
> > >>>>>>>>>      r => v_req,
> > >>>>>>>>>      name => 'User-Agent',
> > >>>>>>>>>      value => 'Mozilla/4.0');
> >
> > >>>>>>>>>    -- Pretend we're coming from an html form
> > >>>>>>>>>    UTL_HTTP.SET_HEADER(
> > >>>>>>>>>      r => v_req,
> > >>>>>>>>>      name => 'Content-Type',
> > >>>>>>>>>      value => 'application/x-www-form-urlencoded');
> >
> > >>>>>>>>>    -- Set the length of the input
> > >>>>>>>>>    UTL_HTTP.SET_HEADER(
> > >>>>>>>>>      r => v_req,
> > >>>>>>>>>      name => 'Content-Length',
> > >>>>>>>>>      value => length(v_status));
> >
> > >>>>>>>>>    -- authenticate with twitter user/pass
> > >>>>>>>>>    UTL_HTTP.SET_AUTHENTICATION(
> > >>>>>>>>>      r => v_req,
> > >>>>>>>>>      username => p_user,
> > >>>>>>>>>      password => p_pwd );
> >
> > >>>>>>>>>    -- Send the update
> > >>>>>>>>>    UTL_HTTP.WRITE_TEXT(
> > >>>>>>>>>      r => v_req,
> > >>>>>>>>>      data => v_status );
> >
> > >>>>>>>>>    UTL_HTTP.end_request (v_req);
> >
> > >>>>>>>>>    RETURN TRUE;
> >
> > >>>>>>>>>  EXCEPTION
> > >>>>>>>>>    -- normal exception when reading the response
> > >>>>>>>>>    WHEN UTL_HTTP.END_OF_BODY THEN
> > >>>>>>>>>            UTL_HTTP.end_request (v_req);
> > >>>>>>>>>          RETURN TRUE;
> >
> > >>>>>>>>>    -- Anything else and send false
> > >>>>>>>>>    WHEN OTHERS THEN
> > >>>>>>>>>      UTL_HTTP.end_request (v_req);
> > >>>>>>>>>      Dbms_Output.Put_Line ( 'Request_Failed: ' ||
> > >>>>>>>>> Utl_Http.Get_Detailed_Sqlerrm );
> > >>>>>>>>>      Dbms_Output.Put_Line ( 'Ora: ' || Sqlerrm );
> > >>>>>>>>>         RETURN FALSE;
> >
> > >>>>>>>>>  END;
> >
> > >>>>>>>>> END tweet;
> >
> > >>>>>>>>> Thanks
> >
> > >>>>>>>> --
> >
> > >>>>>>>> Matt Harris
> > >>>>>>>> Developer Advocate, Twitter
> > >>>>>>>>http://twitter.com/themattharris
> >
> > >>>>>> --
> >
> > >>>>>> Matt Harris
> > >>>>>> Developer Advocate, Twitter
> > >>>>>>http://twitter.com/themattharris
> >
> > >>>> --
> >
> > >>>> Matt Harris
> > >>>> Developer Advocate, Twitter
> > >>>>http://twitter.com/themattharris
> >
> > > --
> >
> > > Matt Harris
> > > Developer Advocate, Twitter
> > >http://twitter.com/themattharris
>

Reply via email to